---
title: "Acala / Karura Token Dashboard"
output:
flexdashboard::flex_dashboard:
orientation: rows
vertical_layout: scroll
social: menu
source_code: embed
---
```{css custom1, echo=FALSE}
.dataTables_scrollBody {
max-height: 100% !important;
}
```
```{r global, include=FALSE}
library(knitr)
knitr::opts_chunk$set(
message = FALSE,
warning = FALSE,
comment = "#>"
)
library(kableExtra)
library(formattable)
library(lubridate)
library(flexdashboard)
library(DT)
library(subscanr)
library(ghql)
x <- GraphqlClient$new()
# Helper function to concat
`%+%` <- function(a, b) paste0(a, b)
```
```{r tokens, cache = TRUE, include=FALSE}
rd <- fread("~/Python_HOME/tokens.csv")
# dim(rd)
# rd[, .N, by = Token][N > 1]
# fix Tokens
rd[, Symbol := Token]
rd[Token == "{'ForeignAsset': 0}", Symbol := "RMRK"]
rd[Token == "{'ForeignAsset': 1}", Symbol := "ARIS"]
rd[Token == "{'ForeignAsset': 2}", Symbol := "QTZ"]
rd[Token == "{'ForeignAsset': 3}", Symbol:= "MOVRZ"]
rd[Token == "{'ForeignAsset': 4}", Symbol := "HKO"]
rd[Token == "{'ForeignAsset': 5}", Symbol := "CSM"]
rd[Token == "{'ForeignAsset': 6}", Symbol := "KICO"]
rd[Token == "{'ForeignAsset': 7}", Symbol := "USDT"]
rd[Token == "{'ForeignAsset': 8}", Symbol := "TEER"]
rd[Token == "{'ForeignAsset': 9}", Symbol := "NEER"]
rd[Token == "{'ForeignAsset': 10}", Symbol := "KMA"]
rd[Token == "{'ForeignAsset': 11}", Symbol := "BSX"]
rd[Token == "{'ForeignAsset': 12}", Symbol := "AIR"]
rd[Token == "{'ForeignAsset': 13}", Symbol := "CRAB"]
rd[Token == "{'ForeignAsset': 14}", Symbol := "GENS"]
rd[Token == "{'ForeignAsset': 15}", Symbol := "EQD"]
rd[Token == "{'StableAssetPoolToken': 0}", Symbol := "taiKSM"]
rd[Token == "{'LiquidCrowdloan': 13}", Symbol := "LCDOT"]
rd[Token == "{'Token': 'VSKSM'}", Symbol := "VSKSM"]
rd[Token == "{'Token': 'PHA'}", Symbol := "PHA"]
rd[Token == "{'Token': 'KSM'}", Symbol := "KSM"]
rd[Token == "{'Token': 'KBTC'}", Symbol := "KBTC"]
rd[Token == "{'Token': 'TAI'}", Symbol := "TAI"]
rd[Token == "{'Token': 'LKSM'}", Symbol := "LKSM"]
rd[Token == "{'Token': 'KINT'}", Symbol :="KINT"]
rd[Token == "{'Token': 'KUSD'}", Symbol := "AUSD"]
rd[Token == "{'Token': 'BNC'}", Symbol := "BNC"]
rd[substr(Token, 1, 6) == "['KAR'", Symbol := "KAR"]
rd[Token == "['CRAB', 'CKTON']", Symbol := "CKTON"]
rd[Token == "{'Token': 'LDOT'}", Symbol := "LDOT"]
rd[Token == "{'Token': 'DOT'}", Symbol := "DOT"]
rd[Token == "{'Token': 'AUSD'}", Symbol := "AUSD"]
rd[substr(Token, 1, 6) == "['ACA'", Symbol := "ACA"]
rd[Token == "{'Token': 'INTR'}", Symbol := "INTR"]
rd[substr(Symbol, 1, 1) == "{", Symbol := NA]
# web3.py
# eth95.dev
# Shiden
rd[Token == "340282366920938463463374607431768211455" & Name == 'Shiden', Symbol := "KSM"]
rd[Token == "340282366920938463463374607431768211455" & Name == 'Astar', Symbol := "DOT"]
# Moonriver
rd[Token == "108457044225666871745333730479173774551" & Name == 'Moonriver', Symbol := "CSM"]
rd[Token == "76100021443485661246318545281171740067" & Name == 'Moonriver', Symbol := "HKO"]
rd[Token == "328179947973504579459046439826496046832" & Name == 'Moonriver', Symbol := "KBTC"]
rd[Token == "189307976387032586987344677431204943363" & Name == 'Moonriver', Symbol := "PHA"]
rd[Token == "214920334981412447805621250067209749032" & Name == 'Moonriver', Symbol := "AUSD"]
rd[Token == "175400718394635817552109270754364440562" & Name == 'Moonriver', Symbol := "KINT"]
rd[Token == "311091173110107856861649819128533077277" & Name == 'Moonriver', Symbol := "USDT"]
rd[Token == "182365888117048807484804376330534607370" & Name == 'Moonriver', Symbol := "RMRK"]
rd[Token == "42259045809535163221576417993425387648" & Name == 'Moonriver', Symbol := "KSM"]
rd[Token == "10810581592933651521121702237638664357" & Name == 'Moonriver', Symbol := "KAR"]
rd[Token == "319623561105283008236062145480775032445" & Name == 'Moonriver', Symbol := "BNC"]
# Moonbeam
rd[Token == "110021739665376159354538090254163045594" & Name == 'Moonbeam', Symbol := "AUSD"]
rd[Token == "42259045809535163221576417993425387648" & Name == 'Moonbeam', Symbol := "DOT"]
rd[Token == "224821240862170613278369189818311486111" & Name == 'Moonbeam', Symbol := "ACA"]
# rd[, .(Token, Symbol)]
rd[, .N, by = Symbol][N > 1]
rd <- merge(rd, subscanr::tokens[, .(Token, decimals)], by.x = "Symbol", by.y = "Token")
rd[, adj := 10 ** as.numeric(decimals)]
rd[, Amount := as.numeric(Amount) / adj]
```
Row
----
### DOT
```{r DOT}
dot <- rd[Symbol == 'DOT', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
dot[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(dot, escape = FALSE) %>%
kable_styling()
```
Row
----
### KSM
```{r KSM}
ksm <- rd[Symbol == 'KSM', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
ksm[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(ksm, escape = FALSE) %>%
kable_styling()
```
Row
----
### AUSD
```{r AUSD}
ausd <- rd[Symbol == 'AUSD', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
ausd[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(ausd, escape = FALSE) %>%
kable_styling()
```
Row
----
### KBTC
```{r KBTC}
kbtc <- rd[Symbol == 'KBTC', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
kbtc[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(kbtc, escape = FALSE) %>%
kable_styling()
```
Row
----
### KINT
```{r KINT}
kint <- rd[Symbol == 'KINT', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
kint[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(kint, escape = FALSE) %>%
kable_styling()
```
Row
----
### PHA
```{r PHA}
pha <- rd[Symbol == 'PHA', .(Name, Symbol, Block, Time, Module, Amount)] %>%
setorder(-Amount)
pha[, Percent := round((Amount / sum(Amount)) * 100, 2)]
knitr::kable(pha, escape = FALSE) %>%
kable_styling()
```